package semaforos;

import java.util.Observable;
import java.util.Timer;
import java.util.TimerTask;

public class GestorSemaforo extends Observable{
	private static GestorSemaforo mGestorSemaforo = new GestorSemaforo();
	private boolean estaVerde; // Indica si el sem�foro esta verde para los peatones o no
	private static final int PERIODO = 15;
	private int cont;
	private Timer timer = null;
	
	private GestorSemaforo() {
		estaVerde = false;
		cont = PERIODO;
		TimerTask  timerTask = new TimerTask() {
			@Override
			public void run() {
				actualizarCont();				
			}
		};
		timer = new Timer();
		timer.scheduleAtFixedRate(timerTask, 0, 1000);
	}

	/**
	 * 
	 * @return
	 */
	public static GestorSemaforo getGestorSemaforo() {
		return mGestorSemaforo;
	}

	private void actualizarCont() {
		cont--;
		if (cont == 0) {
			cont=PERIODO;
			estaVerde = !estaVerde;
		}
		setChanged();
		notifyObservers();
	}
	
	public int getContador() {
		return cont;
	}
	
	public boolean estaVerde() {
		return estaVerde;
	}
	
	public void ponerVerde() {
		if (!estaVerde()) {
			cont= PERIODO;
			estaVerde = true;
		}
		setChanged();
		notifyObservers();
	}

}
